package com.forum.controller.user;


import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import java.util.UUID;
@RestController
@RequestMapping("/user/upload")
@Api(tags = "上传接口")
public class uploadController {

    @PostMapping("/uploadImage")
    public String uploadImage(MultipartFile file) throws IOException {
        //获取上传图片全名
        String filename = file.getOriginalFilename();
        //截取图片后缀名
        String s = filename.substring(filename.lastIndexOf("."));
        //使用UUID拼接文件后缀名 防止文件名重复 导致被覆盖
        String replace = UUID.randomUUID().toString().replace("-", "")+s;
        //创建文件 此处文件路径为项目resource目录下upload文件中
//        注：不知道resource路径 可以右键resource文件选择Cpoy Path/Reference 后点击选择Path From repository Root即可
        Date date = new Date();
        LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        int year = localDate.getYear();
        int month = localDate.getMonthValue(); // 1-12
        File file1 = new File(System.getProperty("user.dir") +
                "/forum-server/src/main/resources/upload/"+"/"+year+"/"+"/"+month+"/" + replace);
        //判断文件的父文件夹是否存在 如果不存在 则创建
        if (!file1.getParentFile().exists()){
            file1.getParentFile().mkdirs();
        }
        file.transferTo(file1);
        System.out.println(file1.getAbsolutePath());
        //返回文件访问路径
//        这里是在配置类中配置的访问路径，访问项目中的文件需要ip和端口号才能访问到具体的程序
        return "http://localhost:8899/upload/"+year+"/"+month+"/"+replace;
    }

}
